package com.fjw.controller;

import com.fjw.pojo.Material;
import com.fjw.pojo.Result;
import com.fjw.service.MaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 就业资源资料管理控制器
 * 提供资料的增删改查RESTful接口
 */
@RestController
@RequestMapping("/material")
public class MaterialController {

    @Autowired
    private MaterialService materialService;

    /**
     * 添加资料
     * @param material 资料实体，JSON格式
     * @return 操作结果
     */
    @PostMapping("/add")
    public Result add(@RequestBody Material material){
        System.out.println(material); // 打印请求参数（调试用）
        materialService.add(material);
        return Result.success();
    }

    /**
     * 获取所有资料
     * @return 资料列表
     */
    @GetMapping("/getAll")
    public Result<List<Material>> getAll(){
        List<Material> res = materialService.getAll();
        return Result.success(res);
    }

    /**
     * 通过ID查询资料
     * @param id 资料ID（URL参数）
     * @return 资料实体
     */
    @GetMapping("/findById")
    public Result<Material> findById(Integer id){
        System.out.println(id); // 打印请求参数（调试用）
        Material res = materialService.findById(id);
        return Result.success(res);
    }

    /**
     * 通过作者ID查询资料列表
     * @param author 作者ID（URL参数）
     * @return 资料列表
     */
    @GetMapping("/findByAuthor")
    public Result<List<Material>> findByAuthor(Integer author){
        System.out.println(author); // 打印请求参数（调试用）
        List<Material> res = materialService.findByAuthor(author);
        return Result.success(res);
    }

    /**
     * 通过分类查询资料列表
     * @param category 资料分类（URL参数，如"简历模板"、"面试技巧"）
     * @return 资料列表
     */
    @GetMapping("/findByCategory")
    public Result<List<Material>> findByCategory(String category){
        System.out.println(category); // 打印请求参数（调试用）
        List<Material> res = materialService.findByCategory(category);
        return Result.success(res);
    }

    /**
     * 通过ID删除资料
     * @param id 资料ID（URL参数）
     * @return 操作结果
     */
    @DeleteMapping("/deleteById")
    public Result deleteById(Integer id){
        System.out.println(id); // 打印请求参数（调试用）
        materialService.deleteById(id);
        return Result.success();
    }

    /**
     * 通过ID更新资料
     * @param material 资料实体（需包含ID）
     * @return 操作结果
     */
    @PostMapping("/updateById")
    public Result updateById(@RequestBody Material material){
        System.out.println(material); // 打印请求参数（调试用）
        materialService.updateById(material);
        return Result.success();
    }
}
